File manager - Edit - /home/autoph/public_html/projects/app/Http/Controllers/API/v1/WfhApprovalController.php
Back
<?php namespace App\Http\Controllers\API\v1; use App\Http\Controllers\Controller; use App\Models\EmployeeWfh; use App\Models\NotificationErrorLog; use App\Models\Timelog; use App\Models\User; use App\Models\WfhFloatedTimelog; use App\Notifications\Travel; use App\Notifications\Wfh; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Notification; use Throwable; class WfhApprovalController extends Controller { public function index(Request $request) { $employee = Auth::user(); DB::enableQueryLog(); $keyword = $request->input('keyword', ''); $perPage = $request->input('per_page', PHP_INT_MAX); $sortBy = $request->input('sortBy', ''); $sortType = $request->input('sortType', ''); $currentEmp = $employee->employees ? $employee->employees->employee_id : ''; $data = EmployeeWfh::with(['recommending', 'approving', 'employee']) ->where(function ($query) use ($employee) { $query->where('recommending_id', $employee->employees ? $employee->employees->employee_id : '') ->orWhere('approver_id', $employee->employees ? $employee->employees->employee_id : '' ); }) ->where('enabled', 1) ->whereNull('deleted_at') ->select('employee_wfhs.*') ->selectRaw(' (SELECT COUNT(*) FROM employee_wfhs AS el WHERE el.status IN (0, 1) AND (el.recommending_id = '.$currentEmp.' OR el.approver_id = '.$currentEmp.') AND el.deleted_at IS NULL) AS pending, (SELECT COUNT(*) FROM employee_wfhs AS el WHERE el.status = 2 AND (el.recommending_id = '.$currentEmp.' OR el.approver_id = '.$currentEmp.') AND el.deleted_at IS NULL) AS approved, (SELECT COUNT(*) FROM employee_wfhs AS el WHERE el.status = 99 AND (el.recommending_id = '.$currentEmp.' OR el.approver_id = '.$currentEmp.') AND el.deleted_at IS NULL) AS denied') ->orderBy('status', 'ASC') ->paginate($perPage); // dd($data); // dd(DB::getQueryLog()); return response()->json($data); } public function update(Request $request, int $id) { $data = EmployeeWfh::with(['employee'])->where('id', $id)->first(); if($request->status == 5){ $floatedTimelogs = WfhFloatedTimelog::where('employee_id', $data->employee_id)->whereDate('datetimelog', $data->date)->get(); $search = array('-', ' ', ':'); $replace = array('', '', ''); // Replace with a single blank space foreach($floatedTimelogs as $floatedLog){ $replaced = str_replace($search, $replace, $floatedLog['datetimelog']); Timelog::create([ 'employee_id' => $floatedLog['employee_id'], 'time_keeping_id' => $floatedLog['time_keeping_id'], 'in_out' => $floatedLog['in_out'], 'datetimelog' => $floatedLog['datetimelog'], 'ip_address' => $floatedLog['ip_address'], 'latitude' => $floatedLog['latitude'], 'longitude' => $floatedLog['longitude'], 'sync_id' => $replaced.'-'.$data->employee_id.'-'.date('Ymd'), 'sync_at' => date('Y-m-d H:i:s'), 'image' => $floatedLog['image'] ]); WfhFloatedTimelog::where('id', $floatedLog['id'])->update([ 'employee_id' => $floatedLog['employee_id'], 'time_keeping_id' => $floatedLog['time_keeping_id'], 'in_out' => $floatedLog['in_out'], 'datetimelog' => $floatedLog['datetimelog'], 'ip_address' => $floatedLog['ip_address'], 'latitude' => $floatedLog['latitude'], 'longitude' => $floatedLog['longitude'], 'sync_id' => $replaced.'-'.$data->employee_id.'-'.date('Ymd'), 'sync_at' => date('Y-m-d H:i:s'), 'image' => $floatedLog['image'] ]); } } if (!$data) { return response()->json(['messages' => 'No data found.'], 404); } DB::connection()->beginTransaction(); try { $now = date('Y-m-d H:i:s'); ($request->status == 2 ? $request['approved_at'] = $now : $request->status == 1) ? $request['recommended_at'] = $now : ''; $data->fill($request->all()); $data->save(); $data->touch(); DB::connection()->commit(); $employee_id_for_notification = ''; if($request->status == 1){ $employee_id_for_notification = $data->approver_id; } else if ($request->status == 2){ $employee_id_for_notification = $data->employee_id; } else if ($request->status == 99){ $employee_id_for_notification = $data->employee_id; } $email_to = $this->getEmployeeEmailData($employee_id_for_notification); try { if ($email_to) { Notification::send($email_to, new Wfh($data)); } else { try { $error = [ 'user_id' => Auth::id(), 'model' => 'App\Model\EmployeeWfh', 'message' => 'Email To Not Found' ]; $data = NotificationErrorLog::create($error); DB::connection()->commit(); } catch (Throwable $e) { DB::connection()->rollback(); } } } catch (\Exception $e) { try { $error = [ 'user_id' => Auth::id(), 'model' => 'App\Model\EmployeeWfh', 'message' => $e->getMessage() ]; $data = NotificationErrorLog::create($error); DB::connection()->commit(); } catch (Throwable $e) { DB::connection()->rollback(); } } return response()->json([ 'message' => 'Record Successfully updated!', 'status' => 'success', 'data' => $data, ],201); } catch (Throwable $e) { DB::connection()->rollback(); return response()->json([ 'status' => false, 'message' => 'Unable to process request. Please try again.', 'data' => $e->getMessage() ]); } } public function updateApprover(Request $request, int $id) { $data = EmployeeWfh::with(['employee'])->where('id', $id)->first(); if (!$data) { return response()->json(['messages' => 'No data found.'], 404); } DB::connection()->beginTransaction(); try { $employee_id_for_notification = []; if($request->recommending_id != $data->recommending_id){ $employee_id_for_notification[] = $request->recommending_id; } if ($request->approver_id != $data->approver_id){ $employee_id_for_notification[] = $request->approver_id; } foreach($employee_id_for_notification as $employee_id){ $email_to = $this->getEmployeeEmailData($employee_id); try { if ($email_to) { Notification::send($email_to, new Wfh($data)); } else { try { $error = [ 'user_id' => Auth::id(), 'model' => 'App\Model\EmployeeLeave', 'message' => 'Email To Not Found' ]; $data = NotificationErrorLog::create($error); DB::connection()->commit(); } catch (Throwable $e) { DB::connection()->rollback(); } } } catch (\Exception $e) { try { $error = [ 'user_id' => Auth::id(), 'model' => 'App\Model\EmployeeLeave', 'message' => $e->getMessage() ]; $data = NotificationErrorLog::create($error); DB::connection()->commit(); } catch (Throwable $e) { DB::connection()->rollback(); } } } $data->fill($request->all()); $data->save(); $data->touch(); DB::connection()->commit(); return response()->json([ 'message' => 'Record Successfully updated!', 'status' => 'success', 'data' => $data, ],201); } catch (Throwable $e) { DB::connection()->rollback(); return response()->json([ 'status' => false, 'message' => 'Unable to process request. Please try again.', 'data' => $e->getMessage() ]); } } public function getEmployeeEmailData($id){ return User::where('employee_id', '=', $id)->first(); } public function HrValidation(Request $request,int $id){ $status = $request->status; $data = EmployeeWfh::with(['employee'])->where('id', $id)->first(); if(!$data){ return response()->json(['messages' => 'No data found.']); } $employee_id =Auth::user()->employees->employee_id; DB::beginTransaction(); try{ $data->validated_by = $employee_id; $data->validated_at = now(); $data->validated = $status; $data->deferred_reason = $request->reason; $data->save(); $email_to = $this->getEmployeeEmailData($data->employee_id); Notification::send($email_to, new Wfh($data)); DB::commit(); return response()->json([ 'message' => 'Record Successfully updated!', 'status' => 'success', 'data' => $data, ], 201); } catch (Throwable $e) { DB::rollback(); return response()->json([ 'status' => false, 'message' => 'Unable to process request. Please try again.', 'data' => $e->getMessage() ]); } } }
| ver. 1.4 |
.
| PHP 8.1.32 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings